﻿/*判断是否是内网IP*/

function isInnerIPFn() {

    // 获取当前页面url

    var curPageUrl = window.location.href;

    //console.log('curPageUrl-0  ' + curPageUrl);

    var reg1 = /(http|ftp|https|www):\/\//g;//去掉前缀

    curPageUrl = curPageUrl.replace(reg1, '');

    //console.log('curPageUrl-1  '+curPageUrl);

    var reg2 = /\:+/g;//替换冒号为一点

    curPageUrl = curPageUrl.replace(reg2, '.');

    // console.log('curPageUrl-2  '+curPageUrl);

    curPageUrl = curPageUrl.split('.');//通过一点来划分数组

    //console.log(curPageUrl);

    var ipAddress = curPageUrl[0] + '.' + curPageUrl[1] + '.' + curPageUrl[2] + '.' + curPageUrl[3];

    var isInnerIp = false;//默认给定IP不是内网IP

    var ipNum = getIpNum(ipAddress);

    /**

    * 私有IP：A类  10.0.0.0    -10.255.255.255

    *      B类  172.16.0.0  -172.31.255.255

    *      C类  192.168.0.0 -192.168.255.255

    *      D类  127.0.0.0  -127.255.255.255(环回地址)

**/

    var aBegin = getIpNum("10.0.0.0");

    var aEnd = getIpNum("10.255.255.255");

    var bBegin = getIpNum("172.16.0.0");

    var bEnd = getIpNum("172.31.255.255");

    var cBegin = getIpNum("192.168.0.0");

    var cEnd = getIpNum("192.168.255.255");

    var dBegin = getIpNum("127.0.0.0");

    var dEnd = getIpNum("127.255.255.255");

    isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || isInner(ipNum, dBegin, dEnd);

    //console.log('是否是内网:' + isInnerIp);

    return isInnerIp;

}

function getIpNum(ipAddress) {/*获取IP数*/

    var ip = ipAddress.split(".");

    var a = parseInt(ip[0]);

    var b = parseInt(ip[1]);

    var c = parseInt(ip[2]);

    var d = parseInt(ip[3]);

    var ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;

    return ipNum;

}

function isInner(userIp, begin, end) {

    return (userIp >= begin) && (userIp <= end);

}